// Modules to control application life and create native browser window
const { app, BrowserWindow, ipcMain } = require('electron')
const path = require('path')
const gotTheLock = app.requestSingleInstanceLock()
const plugIn = require('./loadPlugIn');
let mainWindow = null;
const isPack = app.isPackaged;

ipcMain.on('getApps', (event) => {
    // event.reply('render-plug-in', plugIn.get())
    event.returnValue = plugIn.get();
});

ipcMain.on('open-plug-in', (event, args) => {
    plugIn.open(args);
});

ipcMain.on('get-package-status', (event) => {
    event.returnValue = isPack;
});

ipcMain.on('close-plug-in', (event, id) => {
    plugIn.close(id);
});

function createWindow() {
    mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        minHeight: 600,
        minWidth: 800,
        autoHideMenuBar: true,
        icon: path.join(__dirname, './window/icon.ico'),
        webPreferences: {
            nodeIntegration: true,
            webSecurity: false,
            preload: path.join(__dirname, './window/preload.js')
        }
    })
    // and load the index.html of the app.
    if (isPack) {
        mainWindow.loadFile('./window/index.html')
    } else {
        mainWindow.loadURL('http://127.0.0.1:4000/')
    }
}

if (!gotTheLock) {
    app.quit()
} else {
    // This method will be called when Electron has finished
    // initialization and is ready to create browser windows.
    // Some APIs can only be used after this event occurs.
    app.whenReady().then(() => {
        createWindow()
        app.on('activate', function () {
            // On macOS it's common to re-create a window in the app when the
            // dock icon is clicked and there are no other windows open.
            if (BrowserWindow.getAllWindows().length === 0) createWindow()
        })
    })

    // Quit when all windows are closed, except on macOS. There, it's common
    // for applications and their menu bar to stay active until the user quits
    // explicitly with Cmd + Q.
    app.on('window-all-closed', function () {
        if (process.platform !== 'darwin') app.quit()
    })

    // In this file you can include the rest of your app's specific main process
    // code. You can also put them in separate files and require them here.
}